4.15 案列
1、筛选3个及以上大于90的记录
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.筛选大于90.xlsx" )
print (df)
t=df.分数.str.count( "9\d|\d{3}" )>=3
df1=df[t]
print (df1)
返回:
姓名 | 分数 | |
---|---|---|
0 | 张三 | 98、99、97 |
1 | 李四 | 94、100、96 |
2 | 王麻子 | 85、95、89、96 |
3 | 小专 | 98、80 |
4 | 小曾 | 97、91、99 |
姓名 | 分数 | |
---|---|---|
0 | 张三 | 98、99、97 |
1 | 李四 | 94、100、96 |
4 | 小曾 | 97、91、99 |
2、两表合并查询的应用
import pandas as pd
df1=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.两表合并查询的应用.xlsx","分数表" , index_col = 0 )
df2=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.两表合并查询的应用.xlsx","信息表" , index_col = 0 )
print (df1)
print (df2)
t=df1.姓名.str.cat(df2.籍贯, sep = "(",join="left")+")"
print (t)
返回:
姓名 | 分数 | |
---|---|---|
编号 | ||
NED01 | 王二麻 | 786 |
NED03 | 小明 | 698 |
NED04 | 李四 | 702 |
NED05 | 大飞 | 689 |
姓名 | 性别 | 籍贯 | |
---|---|---|---|
编号 | |||
NED01 | 王二麻 | 男 | 四川 |
NED02 | 小明 | 女 | 湖北 |
NED03 | 小曾 | 男 | 北京 |
NED04 | 李四 | 男 | 重庆 |
NED05 | 大飞 | 女 | 云南 |
NED06 | 张三 | 男 | 河北 |
编号 | |
---|---|
NED01 | 王二麻(四川) |
NED03 | 小明(北京) |
NED04 | 李四(重庆) |
NED05 | 大飞(云南) |
Name: 姓名, dtype: object
3、给关键信息加掩码
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.给关键信息加掩码.xlsx" )
print (df)
t=df.名单.str.replace( "([一-龥]+)([一-龥])" , lambda m: "#" *len(m[1])+m[2], regex = True )
print (t)
返回:
姓名 | 名单 | |
---|---|---|
0 | 1期 | 张三、李四、王麻子 |
1 | 2期 | 欧阳、小飞、大明 |
2 | 3期 | 大大志、小林、时克 |
0 | #三、#四、##子 |
1 | #阳、#飞、#明 |
2 | ##志、#林、#克 |
Name: 名单, dtype: object
4、提取单价与数量后做统计
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.提取单价和数量后统计.xlsx" )
print (df)
df[ "采购金额" ]=df.采购记录.str.findall( "[\d.*]+" ).apply( lambda l:sum(df.eval(l)))
print (df)
返回:
日期 | 采购记录 | |
---|---|---|
0 | 2024-01-01 | 白菜3.4*5.2,菠菜5*12 |
1 | 2024-01-02 | 牛肉45*20,大葱3*12.5,西红柿1.5*10 |
2 | 2024-01-03 | 猪肉15*30 |
3 | 2024-01-04 | 大蒜4*100,茄子2.5*15 |
日期 | 采购记录 | 采购金额 | |
---|---|---|---|
0 | 2024-01-01 | 白菜3.4*5.2,菠菜5*12 | 77.68 |
1 | 2024-01-02 | 牛肉45*20,大葱3*12.5,西红柿1.5*10 | 952.50 |
2 | 2024-01-03 | 猪肉15*30 | 450.00 |
3 | 2024-01-04 | 大蒜4*100,茄子2.5*15 | 437.50 |
1、 提取不重复名单
import pandas as pd
s=pd.Series([ "语文120","数学130","英语111" ])
print (s)
t=s.sort_values(key= lambda s:s.str.findall( "\d+" ).map( lambda l:int(l[0])))
print (t)
返回:
0 | 语文120 |
1 | 数学130 |
2 | 英语111 |
dtype: object
2 | 英语111 |
0 | 语文120 |
1 | 数学130 |
dtype: object
import pandas as pd,numpy as np
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.提取不重复名单.xlsx" )
print (df)
df [ "名单" ]=df.名单.str.findall( "(?m)[一-龥]+(?=、|$)" ).apply( lambda l:np.unique(l))
print (df)
#(?=、|$) 零宽断言、或者结尾
#(?m)表示多行
返回:
公司名 | 名单 | |
---|---|---|
0 | 成都分公司 | 1季度:张三、李四\n2季度:小陈、张三\n3季度:李四、小曾\n4季度:张三、李四 |
1 | 上海分公司 | 1季度:林林、小冲\n2季度:小思、小牛\n3季度:大聪明、小思\n4季度:林林、小冲 |
2 | 天津分公司 | 1季度:果果、小宝\n2季度:大牛、果果\n3季度:小宝、大牛\n4季度:果果、大牛 |
公司名 | 名单 | |||||
---|---|---|---|---|---|---|
0 | 成都分公司 | [小曾, | 小陈, | 张三, | 李四] | |
1 | 上海分公司 | [大聪明, | 小冲, | 小思, | 小牛, | 林林] |
2 | 天津分公司 | [大牛, | 小宝, | 果果] |
import pandas as pd,numpy as np
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.对字符串中科目排序.xlsx" )
print (df)
df[ "排序后" ]=df.成绩.str.split( "、" ).map( lambda l:pd.Series(l).sort_values( ascending = True ,
key=lambda s:s.str.findall( "\d+" ).map( lambda l:int(l[0])))).str.join "、" )
print (df)
返回:
姓名 | 成绩 | |
---|---|---|
0 | 张三 | 语文120、数学130、英语111 |
1 | 李四 | 语文99、数学125、英语130 |
2 | 王二麻 | 语文123、数学114、英语121 |
姓名 | 成绩 | 排序后 | |
---|---|---|---|
0 | 张三 | 语文120、数学130、英语111 | 英语111、语文120、数学130 |
1 | 李四 | 语文99、数学125、英语130 | 语文99、数学125、英语130 |
2 | 王二麻 | 语文123、数学114、英语121 | 数学114、英语121、语文123 |